单向散列函数(One-way hash function)
单向散列函数,可以根据根据消息内容计算出散列值
散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值
特点
- 根据任意长度的消息,计算出固定长度的散列值
- 计算速度快,能快速计算出散列值
- 消息不同,散列值也不同
具备单向性
单向散列函数
单向散列函数,又被称为消息摘要函数(message digest function),哈希函数
输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)常见的几种单向散列函数
MD4、MD5
产生128bit的散列值,MD就是Message Digest的缩写,目前已经不安全
Mac终端上默认可以使用md5命令SHA-1
产生160bit的散列值,目前已经不安全SHA-2
SHA-256、SHA-384、SHA-512,散列值长度分别是256bit、384bit、512bitSHA-3
全新标准防止数据被篡改
数字签名
在数字签名技术中,有以下2种行为
生成签名
由消息的发送者完成,通过“签名密钥”生成验证签名
由消息的接收者完成,通过“验证密钥”验证思考
如何能保证这个签名是消息发送者自己签的?答案
用消息发送者的私钥进行签名数字签名和公钥密码
数字签名的过程
数字签名的作用
- 确认消息的完整性
- 识别消息是否被篡改
- 防止消息发送人否认
数字签名无法解决的问题
要正确使用签名,前提是
用于验证签名的公钥必须属于真正的发送者如果遭遇了中间人攻击,那么
公钥将是伪造的
数字签名将失效所以在验证签名之前,首先得先验证公钥的合法性
如何验证公钥的合法性?
证书